package pe.edu.unmsm.ocaa.workspace.negocio.servicio.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;

import pe.edu.unmsm.ocaa.workspace.integracion.dao.GrupoDAO;
import pe.edu.unmsm.ocaa.workspace.integracion.dao.UsuarioDAO;
import pe.edu.unmsm.ocaa.workspace.negocio.modelo.dto.GrupoDTO;
import pe.edu.unmsm.ocaa.workspace.negocio.servicio.GrupoService;

@Service
public class GrupoServiceImpl implements GrupoService{

	@Resource
	GrupoDAO grupoDao;
	@Resource
	UsuarioDAO usuarioDao;
	
	@Override
	public List<GrupoDTO> listarGrupos() throws DataAccessException {
		return grupoDao.selectGrupos();
	}
	@Override
	public GrupoDTO obtenerGrupoxId(Integer idGrupo) throws DataAccessException {
		return grupoDao.selectGrupo(idGrupo);
	}
	@Override
	public void eliminarGrupo(Integer idGrupo) throws DataAccessException {
		grupoDao.deleteGrupo(idGrupo);
	}
	@Override
	public void guardarGrupo(GrupoDTO grupoEditar) throws DataAccessException {
		if(grupoEditar.getIdGrupo()==null) 
			grupoDao.insertGrupo(grupoEditar);
		else
			grupoDao.updateGrupo(grupoEditar);
	}
	@Override
	public Map<String, String> listarGruposMap() throws DataAccessException {
		List<GrupoDTO> grupos=grupoDao.selectGrupos();
		Map<String, String> map=new HashMap<String, String>();
		for (GrupoDTO grupoDTO : grupos) {
			map.put(grupoDTO.getNomGrupo(), grupoDTO.getNomGrupo());
		}
		return map;
	}
	@Override
	public List<String> listarGruposString(Integer idUsuario)
			throws DataAccessException {
		List<GrupoDTO> grupos=grupoDao.selectGruposxUsuario(idUsuario);
		List<String> strGrupos=new ArrayList<String>();
		for (GrupoDTO grupoDTO : grupos) {
			strGrupos.add(grupoDTO.getNomGrupo());
		}
		return strGrupos;
	}
	@Override
	public List<GrupoDTO> listarGruposxLikeNom(String nombre)
			throws DataAccessException {
		return grupoDao.selectGruposxLikeNom(nombre);
	}
	@Override
	public List<GrupoDTO> listarGruposxArchivo(Integer idArchivo)
			throws DataAccessException {
		List<GrupoDTO> grupos=grupoDao.selectGruposxArchivo(idArchivo);
		for (int i = 0; i < grupos.size(); i++) {
			grupos.get(i).setUsuarios(usuarioDao.listUsuariosxGrupo(grupos.get(i).getIdGrupo()));
		}
		return grupos;
	}

}
